I. Field of the Invention
The present invention relates to the field of nonvolatile memory devices. In particular, the present invention relates to an improved write state machine for flash memory devices.
II. Description of the Related Art
One type of nonvolatile memory is flash electrically erasable programmable read only memory (flash EEPROM, or “flash memory”). Similar to electrically erasable programmable read only memory (EEPROM), flash memory may be erased electrically without being removed from the computer system. Flash memory is also similar to erasable programmable read only memory (EEPROM) because flash memory is arranged in blocks such that the entire contents of each block must be erased at once.
Flash memories differ from conventional electrically erasable programmable read only memory (“EEPROMs”) with respect to erasure. Conventional EEPROMs typically use a select transistor for individual byte erase control. Flash memories, on the other hand, typically achieve much higher density with single transistor cells. During one prior art flash memory erase method, a high voltage is supplied to the sources of every memory cell in a memory array simultaneously. This results in a full array erasure.
Conventionally for flash EEPROM, a logical “one” means that few if any electrons are stored on a floating gate associated with a bit cell. A logical “zero” means that many electrons are stored on the floating gate associated with the bit cell. Erasure of this type of flash memory causes a logical one to be stored in each bit cell. Each single bit cell of this type of flash memory cannot be overwritten individually from a logical zero to a logical one without an erasure of an entire block of memory cells. Each single bit cell of that flash memory can, however, be overwritten from a logical one to a logical zero, given that this entails simply adding electrons to a floating gate that contains the intrinsic number of electrons associated with the erased state. The process of adding electrons to the floating gate associated with a bit cell is referred to as programming.
The erasure process of a flash memory array typically involves several steps typically including precondition and postcondition steps. First, the transistors of the block to be erased are preconditioned, whereby the threshold voltages of the memory transistors are increased. The preconditioned transistors are then erased and verified. Certain transistors may have been over-erased, and hence may have negative threshold voltages. These transistors are postconditioned to bring their threshold voltages back up to a certain minimum level. The programming process is similarly comprised of various steps. Flash memory cells are programmed and verified to ensure that programming was successful.
Flash memory has a limited threshold for the number of programming and erasure cycles which each flash memory device can withstand before device degradation or failure. Typically this threshold is about a 100,000 programming and erasure cycles. This cycle lifetime can be further extended to 1,000,000 cycles when flash memory devices incorporate wear-leveling algorithms that distribute data amongst flash memory blocks.
Conventional flash memory devices that do not contain logic to control program and erase sequences burden the system microprocessor with the task of sequencing the flash memory through its program and erase steps. More recent flash memory devices incorporate write state machines which help alleviate the heavy burden on the microprocessor. Upon receipt of a command from the microprocessor, the write state machine cycles the flash memory array through its many erase or program steps automatically, and then reports back to the microprocessor when it is finished.
In previous flash memory devices incorporating a write state machine, the microprocessor could not read from or write to the flash memory device while the erase and program sequences were being performed. The erase and program sequences can take up a significant amount of time, especially in the event of an unsuccessful erase or program step that must be repeated. This presents a problem when a microprocessor desires access to the flash memory array while the write state machine has control of the device.
This problem was alleviated by incorporating an erase suspend function within the write state machine. The microprocessor asserts an “erase suspend” command on the data bus, causing the write state machine to pause its erase sequence. The microprocessor may then read from a block in the flash memory array which is not being accessed by the write state machine. The interrupted erase sequence is then resumed once the microprocessor has finished with the read cycle.
Other advanced functions are carried out by the write state machine. In conventional flash memory devices these functions are laid out in an instruction circuit which contains the necessary logic to perform the instructions in the flash memory array. There exists a need for a more flexible and efficient system for storing these instructions.